//用于首页预览商品
const db = wx.cloud.database()
const _= db.command

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    productInfo:{}
  },

  /**
   * 组件的初始数据
   */
  data: {
    times:0
  },

  /**
   * 组件的方法列表
   */
  methods: {
    toProductDetail(){
      wx.navigateTo({
        url: '/pages/productDetail/productDetail?productInfo='+JSON.stringify(this.data.productInfo),
      })
    },

    //将商品添加至购物车
    addToShoppingCart(){
      wx.showLoading({
        title: '添加中...',
        mask:true,
      })
      let account = wx.getStorageSync('userInfo').account
      let productInfo = {...this.data.productInfo,...{quantity:1}}
      let productId = productInfo._id
      db.collection('shoppingCart').where({
        account,
      }).get().then(res=>{
        if(res.data.length == 0){
          //说明购物车不存在，新建购物车
          this.newShoppingCart(account)
        }else{
          //说明购物车存在，然后更新购物车
          let {_id,products} = res.data[0]
          this.updateShoppingCart(_id,productId,productInfo,products)
        }
      }).catch(error=>{
        console.log(error)
      })
    },

    //新建购物车
    newShoppingCart(account){
      db.collection('shoppingCart').add({
        data:{
          account,
          products:[]
        }
      }).then(()=>{
        let {times} = this.data
        if(times == 0){
          this.addToShoppingCart()
          this.setData({
            times:times++
          })
        }
      }).catch(error=>{
        console.log(error)
      })
    },

    /**
     * 更新购物车
     * @param {*} id :用户购物车id
     * @param {*} productId ：待添加至购物车的商品id
     * @param {*} products ：用户购物车中已有的商品列表
     */
    updateShoppingCart(id,productId,productInfo,products){
      //判断待添加的商品是否购物车中已有，已有的话，quantity+1；否则将商品添加
      let filProduct = products.filter((p)=>{
        return p._id.indexOf(productId) != -1
      })

      if(filProduct.length !=0){
        //说明待添加商品在购物车中已有,quantity+1
        //与filProduct.quantity++效果相同
        for(let item of products){
          if(item._id == productId){
            item.quantity++
          }
        }

        db.collection('shoppingCart').doc(id).update({
          data:{
            products,
          }
        }).then(()=>{
          wx.hideLoading()
          wx.showToast({
            title: '添加成功，亲~',
            icon:'success'
          })
        }).catch(error=>{
          console.error(error)
        })
      }else{
        db.collection('shoppingCart').doc(id).update({
          data:{
            products:_.unshift(productInfo)
          }
        }).then(()=>{
          wx.hideLoading()
          wx.showToast({
            title: '添加成功，亲~',
            icon:'success'
          })
        }).catch(error=>{
          console.log(error)
        })
      }
    },
  },

  attached(){
    this.setData({
      productInfo:this.properties.productInfo
    })
  }
})
